C语言:二位数组中*(a[1]+1)是怎样等于a[1][1]的?

来源:百度知道 编辑:UC知道 时间:2024/07/05 22:46:57
??

二维数组是一维数组的数组,对二维数组a来说,它的元素a[1]就是下标为1的一行数据,是个一维数组,而a[1]作为这个一维数组的名字,其实就是指向数组第一个元素的指针,即这一行的首地址。a[1]+1即a[1][1]的地址,因此*(a[1]+1)即间接访问a[1][1]。
如果不能理解,不妨把a[1]想成另一个名字,例如b。*(b+1)即b[1],肯定是好理解的。

二维数组里 a[i][j]
a[i]是个地址
a[1]就是a[1][0]的地址
加a[1]+1就是a[1][1]的地址
*(a[1]+1)就是a[1][1]的值

二维数组实际上是两个一维数组组成的

a[1]是指向第二行这个数组的首地址的指针
a[1]+1就指向第二行这个数组的第二个元素呗
所以*(a[1]+1)就等于a[1][1]